package entity;

// 子类：Student（继承Person父类）
public class Student extends Person {
    // 子类特有属性：已选课程
    private Course selectedCourse;

    // 子类构造方法：通过super()调用父类构造方法
    public Student(String studentId, String studentName, String gender) {
        super(studentId, studentName, gender); // 调用Person父类的构造方法，初始化编号、姓名、性别
    }

    // 子类特有方法：选课
    public void selectCourse(Course course) {
        this.selectedCourse = course;
        System.out.println(name + "（学生）成功选修课程：" + course.getCourseName());
    }

    // 子类特有方法：退课
    public void dropCourse() {
        if (this.selectedCourse != null) {
            System.out.println(name + "（学生）已退课：" + this.selectedCourse.getCourseName());
            this.selectedCourse = null;
        } else {
            System.out.println(name + "（学生）暂无选课记录，无需退课");
        }
    }

    // 重写父类方法：打印学生课表（扩展父类功能）
    @Override
    public void printInfo() {
        System.out.println("===== 学生课表 =====");
        super.printInfo(); // 调用父类方法，打印编号、姓名、性别
        if (selectedCourse != null) {
            System.out.println("已选课程：" + selectedCourse.getCourseName());
            System.out.println("课程编号：" + selectedCourse.getCourseId());
            System.out.println("上课时间：" + selectedCourse.getTime());
            System.out.println("上课地点：" + selectedCourse.getLocation());
        } else {
            System.out.println("已选课程：无");
        }
        System.out.println("===================\n");
    }

    // Getter方法：获取已选课程
    public Course getSelectedCourse() {
        return selectedCourse;
    }
}